네트워크·통신 용어
프로토콜, OSI 계층, 스위치, 게이트웨이, 프록시, HTTP, 통신망 평면 용어
- 용어 42개
protocol (프로토콜)
통신하는 양쪽이 미리 약속한 규칙. 메시지 형식, 순서, 오류 처리 방식 등.
- 예) TCP, HTTP, TLS.
- 학습 노트: 네트워크 기본 통신 정리 (TCP-UDP, NAT, 네트워크 품질) · 네트워크 과정
peer (피어)
통신에서 마주 보는 상대편(대등한 상대 노드).
- 서버일 수도, 클라이언트일 수도 있다. “대상 서버”만을 뜻하지 않는다.
- 예) peer 정보 = 상대 쪽 주소, 식별자 같은 정보.
client / server, request / response
요청을 보내는 쪽(client)과 받아서 응답하는 쪽(server), 그리고 그 메시지 쌍.
- 한 노드가 상황에 따라 client도 server도 될 수 있다.
TCP
연결 지향 전송 프로토콜(L4). 순서 보장, 유실 시 재전송, 흐름·혼잡 제어로 신뢰성 있는 통신을 제공한다.
- 연결을 맺을 때 3-way handshake를 한다.
- UDP는 연결 없이 빠르게 보내지만 신뢰성은 제공하지 않는다.
- 학습 노트: 네트워크 기본 통신 정리 (TCP-UDP, NAT, 네트워크 품질) · 인터넷 통신과정 ( + IP, TCP-UDP, PORT, DNS )
OSI 7계층 (L1 ~ L7)
통신 기능을 7단계로 나눈 참조 모델.
| 계층 | 이름 | 핵심 역할 | 예시 |
|---|---|---|---|
| L7 | 응용(Application) | 사용자 서비스용 프로토콜 | HTTP, DNS, FTP |
| L6 | 표현(Presentation) | 데이터 형식 변환, 암호화, 압축 | TLS(일부), 문자 인코딩 |
| L5 | 세션(Session) | 연결(세션)의 시작, 유지, 종료 관리 | 세션 관리 |
| L4 | 전송(Transport) | 포트 기반 프로세스 간 전달, 신뢰성 | TCP, UDP |
| L3 | 네트워크(Network) | IP 주소 기반 경로 선택(라우팅) | IP, 라우터 |
| L2 | 데이터링크(Data Link) | MAC 주소 기반, 같은 네트워크 안 프레임 전달 | 이더넷, L2 스위치 |
| L1 | 물리(Physical) | 전기·광 신호로 비트 전송 | 케이블, 허브 |
아래에서 위로 “물리 → 데이터링크 → 네트워크 → 전송 → 세션 → 표현 → 응용” 순서다. 실무에서는 L5~L7을 합쳐 TCP/IP 4계층(링크, 인터넷, 전송, 응용)으로 설명하기도 한다.
IP / MAC / port / socket
IP는 네트워크 상의 주소(L3), MAC은 네트워크 카드 고유 주소(L2), port는 한 호스트 안에서 프로그램을 구분하는 번호(L4), socket은 통신의 끝점(IP + 포트).
- 학습 노트: Socket 통신 · 클라이언트-서버 구현을 위한 소켓 기초 정리
network byte order (네트워크 바이트 순서)
네트워크로 보내는 멀티바이트 값(포트 번호, IP 주소, 프로토콜 헤더 필드)을 big endian으로 보내기로 한 약속.
- little endian 장비(x86 등)는 보내기 전에
htons/htonl(host to network)로 바꾸고, 받은 뒤ntohs/ntohl(network to host)로 되돌린다. - 상세는 운영체제·시스템 노트의 endian 항목 참고.
- 학습 노트: 리틀엔디안-빅엔디안 · 엔디안(바이트 순서)과 인터넷 체크섬 — LSB·MSB와 htons를 직접 만들어보기 · 3. 바이트 골격 — 비트플래그·엔디안·Pack·Unpack
L2 스위치
MAC 주소를 보고 프레임을 해당 포트로만 전달하는 장비(같은 LAN 안).
- “필터링”보다는 “MAC 주소 기반 전달(포워딩)“이 정확한 설명이다.
- 학습 노트: ARP 프로토콜과 ARP Spoofing(MITM) 이론 · Aruba 스위치 보안 하드닝 가이드
L3 스위치
L2 스위치 기능에 IP 라우팅 기능을 더한 장비.
- 서로 다른 네트워크(VLAN) 간 통신을 빠르게 라우팅한다.
L4 스위치
IP와 포트(TCP/UDP) 정보를 보고 트래픽을 분산하거나 제어하는 장비.
- L4 로드밸런서로도 불린다. 더 위로 URL, 헤더, 쿠키 같은 L7 내용까지 보고 분산하는 것은 L7 스위치(로드밸런서)다.
router (라우터)
서로 다른 네트워크 사이에서 IP 주소를 보고 경로를 선택해 패킷을 전달하는 장비.
gateway (게이트웨이)
서로 다른 네트워크나 시스템 사이의 출입구.
- 네트워크 게이트웨이: 내부망이 외부로 나가는 출구(기본 게이트웨이).
- API gateway: 여러 서비스 앞에 두는 단일 진입점. 인증, 라우팅, 속도 제한, 로깅 같은 공통 처리를 한다.
- 학습 노트: 점진적 인증 전환과 게이트웨이 책임분리 패턴
proxy (프록시)
클라이언트와 서버 사이에서 요청을 대신 전달하는 중간 서버(대리).
- forward proxy: 클라이언트 쪽 대리. 접근 통제, 캐시에 쓴다.
- reverse proxy: 서버 쪽 대리. 로드밸런싱, TLS 종료, 보호에 쓴다.
- 중간에서 요청을 받으므로 전처리를 할 수 있지만, 정의의 핵심은 “대리”다.
- 학습 노트: 실무 프로젝트 및 오픈소스로 체득하는 GoF 핵심 디자인 패턴 10선 (Proxy, Decorator, Strategy, Chain, Template, SPI, Visitor, Facade)
reverse proxy (리버스 프록시)
서버 앞단에서 클라이언트의 요청을 대신 받아 뒤쪽 서버로 전달하는 중간 서버.
- load balancing은 reverse proxy가 하는 일 중 하나일 뿐 전부는 아니다. 그 밖에 TLS 종료(암호화 처리), 캐시, 압축, 인증, URL별 라우팅, 뒤쪽 서버 숨기기(보안)를 한다.
- load balancer와 reverse proxy는 같은 말이 아니다. load balancer는 “분산”이 목적이고(L4도 가능), reverse proxy는 “대리 수신”이 정의다. nginx, HAProxy 같은 도구는 둘 다 수행한다.
relay (릴레이)
받은 메시지를 큰 변형 없이 다음 대상으로 중계하는 것.
- proxy, gateway와 경계가 모호하고 제품마다 용어가 다르게 쓰인다. 중계에 초점이 있다는 정도로 이해한다.
방화벽 (firewall)
규칙(IP, 포트, 프로토콜 등)에 따라 통신을 허용하거나 차단하는 보안 장치.
- 상태 기반으로 연결을 추적하는 방식이 일반적이며, 웹 요청 내용까지 보는 WAF(웹 방화벽)는 L7을 본다.
- 학습 노트: Linux 보안 · 원격 · 방화벽 · DNS 정리
load balancing / load balancer (로드 밸런싱)
들어온 요청(부하)을 여러 서버에 고르게 나누어 한 서버에 몰리지 않게 하는 것, 또는 그 장치·소프트웨어.
- 분산 방식 예) round robin(순서대로), least connections(연결이 가장 적은 서버로), weighted(서버 성능에 따라 가중치), IP hash(같은 클라이언트는 같은 서버로).
- health check로 장애 난 서버를 제외하고 정상 서버로만 보낸다.
- L4(IP+포트 기준)와 L7(URL, 헤더, 쿠키 기준) 방식이 있다.
- 학습 노트: 로드밸런스
NAT
사설 IP와 공인 IP를 서로 바꿔 주는 기능.
DNS
도메인 이름을 IP 주소로 바꿔 주는 체계.
- 학습 노트: DNS · 인터넷 통신과정 ( + IP, TCP-UDP, PORT, DNS )
HTTP
웹과 서비스 간 API 통신에 쓰는 요청-응답 프로토콜(L7).
- HTTP/2는 하나의 연결에서 여러 요청을 동시에 주고받을 수 있다(multiplexing).
- 학습 노트: HTTP 프로토콜 #1 · HTTP 이론
HTTP 메서드 (GET / POST / PUT / PATCH / DELETE)
요청이 “무엇을 하라는 것인지”를 나타낸다.
- 학습 노트: HTTP 프로토콜 #1 · HTTP 이론
| 메서드 | 의미 | 멱등 | 비고 |
|---|---|---|---|
| GET | 조회 | O | 본문 없이 자원을 가져온다 |
| POST | 생성, 또는 처리 요청 | 보통 X | 자원 생성에 가장 흔히 쓴다 |
| PUT | 전체 교체(없으면 생성) | O | 일부만 보내면 나머지가 사라진다 |
| PATCH | 부분 수정 | 설계에 따라 다름 | 바뀐 부분만 보낸다 |
| DELETE | 삭제 | O |
- CRUD와의 대응: Create = POST(또는 PUT), Read = GET, Update = PUT/PATCH, Delete = DELETE.
- 주의: HTTP에는
create라는 메서드가 없다. “PUT = 수정”이 아니라 “PUT = 전체 교체”이고, 일부만 고치려면 PATCH를 쓴다.
HTTP 상태 코드
응답이 성공했는지, 누구의 문제인지를 나타내는 숫자.
- 학습 노트: HTTP 프로토콜 #1 · HTTP 이론
| 범위 | 의미 | 예 |
|---|---|---|
| 2xx | 성공 | 200 OK, 201 Created, 204 No Content |
| 3xx | 다른 위치로 이동 | 301, 307, 308 |
| 4xx | 클라이언트 요청 문제 | 400 Bad Request, 401, 403, 404 |
| 5xx | 서버 문제 | 500, 503 |
REST
자원을 URL로 표현하고 HTTP 메서드로 동작을 표현하는 API 설계 방식.
- 학습 노트: HTTP 이론
TLS / HTTPS
TLS는 통신을 암호화하는 프로토콜, HTTPS는 HTTP를 TLS 위에서 쓰는 것.
- 학습 노트: HTTPS · 스토리지 · 파일 서비스 정리 · 04. Netty 소켓 파이프라인 SSL-TLS 적용과 mTLS 상호 인증 (SslHandler, KeyStore, SslContext) · 인증·인가 방식 비교 - API Key·OAuth2·JWT·HMAC·mTLS
latency / throughput
latency(지연)는 요청 후 응답까지 걸리는 시간, throughput(처리량)은 단위 시간당 처리하는 양.
throttling (스로틀링) / rate limiting
단위 시간당 허용하는 요청 수를 제한해서 과부하를 막는 것.
- “최대값을 정한다”는 이해가 맞다. 한도를 넘는 요청은 늦추거나 거절한다. 예) 초당 100건까지만 처리.
- HTTP에서는 보통 429 Too Many Requests로 거절하고, Retry-After 헤더로 다시 시도할 시점을 알려 줄 수 있다.
- rate limiting은 “한도 정책”을, throttling은 “그 한도에 맞게 속도를 조절하는 동작”을 가리키는 경우가 많지만 도구마다 같은 뜻으로 섞어 쓴다.
- 학습 노트: 장애 전파 방지 패턴 - Circuit Breaker·Bulkhead·Retry·Rate Limit
traffic spike (트래픽 급증)
짧은 시간에 요청량(트래픽)이 평소보다 갑자기 크게 늘어나는 현상.
- 원인 예) 이벤트·프로모션, 장애 복구 직후 클라이언트가 한꺼번에 다시 접속, 실패한 요청의 재시도가 몰리는 경우(retry storm), 배치 작업이 같은 시각에 시작.
- 처리 능력을 넘으면 응답 지연, 오류, 장애로 이어진다.
- 대응 수단: 서버를 늘리는 scale-out(자동 확장), throttling으로 한도 제한, 큐로 완충, 캐시, 로드밸런싱. 재시도 간격을 점점 늘리는(backoff) 것도 spike를 줄인다.
- 학습 노트: 장애 전파 방지 패턴 - Circuit Breaker·Bulkhead·Retry·Rate Limit · 쿠버네티스 기본 개념 - Pod·Node·Cluster·Deployment
keep-alive / connection pool
keep-alive는 요청 하나가 끝나도 TCP 연결을 끊지 않고 재사용하는 것, connection pool은 연결을 미리 여러 개 만들어 두고 돌려 쓰는 것.
- 연결을 맺는 비용(3-way handshake, TLS)을 아낀다.
- 주의: 클라이언트 pool의 idle timeout이 서버나 로드밸런서의 idle timeout보다 길면, 이미 끊긴 연결을 재사용하다 오류가 난다. 클라이언트 쪽을 더 짧게 둔다.
- 학습 노트: Connection Pool의 이해와 DataSource · 장애 전파 방지 패턴 - Circuit Breaker·Bulkhead·Retry·Rate Limit
DNS 캐시 / TTL
도메인 → IP 변환 결과는 여러 층에서 캐시된다. 애플리케이션(JVM 등), OS·로컬 DNS 캐시, DNS 서버 순이다.
- 원본 DNS 값이 바뀌어도 중간에 옛 값이 남아 있으면 이미 사라진 서버로 접속하거나 조회에 실패한다(stale cache). IP가 자주 바뀌는 클라우드·쿠버네티스에서 특히 자주 겪는다.
- TTL은 레코드를 캐시해도 되는 시간이다. 조회 실패 결과도 일정 시간 캐시하는(negative caching) 설정이 있어서, DNS가 잠깐 실패하면 그 뒤 한동안 계속 실패할 수 있다. 확인은 각 층의 캐시와 TTL 설정을 순서대로 본다.
- 학습 노트: DNS · 인터넷 통신과정 ( + IP, TCP-UDP, PORT, DNS )
tcpdump
네트워크 패킷을 캡처해서 보여 주는 도구.
- “가끔 이상하게 끊긴다” 같은 문제를 패킷 수준에서 확인할 때 쓴다.
- 학습 노트: pcap 예제 · libpcap 함수
conntrack / iptables / ipvs (리눅스)
conntrack은 커널의 연결 추적 테이블(가득 차면 새 연결을 버린다), iptables는 패킷 필터링·NAT 규칙, ipvs는 커널 수준 L4 로드밸런싱.
- 쿠버네티스 서비스 라우팅이 실제로 구현되는 계층이다.
- 학습 노트: Linux 보안 · 원격 · 방화벽 · DNS 정리
Control Plane / User Plane (3GPP 통신망)
control plane(제어 평면)은 연결 설정, 인증, 이동성 관리 같은 제어 신호를 다루는 부분이고, user plane(사용자 평면)은 실제 사용자 데이터(영상, 인터넷 트래픽)를 나르는 부분.
- 두 평면을 나누면 독립적으로 확장하고 설계할 수 있다. 일반 네트워크 장비의 control plane / data plane 구분과 같은 개념이다.
HTTP/2
하나의 TCP 연결 위에서 요청·응답을 바이너리 프레임으로 쪼개 여러 스트림으로 동시에 주고받는 HTTP 버전(RFC 9113).
- HTTP/1.1이 병렬성을 얻으려고 연결을 여러 개 열던 것과 달리 연결 하나로 충분하다(multiplexing).
- 스트림 ID로 구분한다. 클라이언트가 연 스트림은 홀수, 서버가 연 스트림은 짝수이고, 한 번 쓴 ID는 연결 안에서 다시 쓰지 못한다.
- TCP 계층의 HOL 블로킹은 남는다. HTTP/3은 이를 피하려고 QUIC을 쓴다.
- 학습 노트: HTTP/2 핵심 개념 — 프레임·스트림·HPACK·흐름 제어·SETTINGS
HPACK
HTTP/2의 헤더 압축 방식. 이미 보낸 헤더를 정적·동적 테이블의 인덱스로 바꾸고 나머지 문자열은 Huffman 부호로 줄인다(RFC 7541).
- 동적 테이블은 연결마다 상태를 가지므로 헤더 블록은 순서대로 처리해야 한다.
- 학습 노트: HTTP/2 핵심 개념 — 프레임·스트림·HPACK·흐름 제어·SETTINGS
ALPN (Application-Layer Protocol Negotiation)
TLS 핸드셰이크 중에 이 연결에서 어떤 응용 프로토콜(예: h2)로 말할지 정하는 확장.
- 클라이언트가 지원 목록을 제시하고 서버가 하나를 고른다. 핸드셰이크 뒤 결과를 반드시 확인한다.
- OpenSSL의
SSL_CTX_set_alpn_protos는 성공이 0이다(다른 함수와 반환 규칙이 반대). - 학습 노트: OpenSSL로 mTLS 컨텍스트 만들기 — 인증서·CA·검증·ALPN·논블로킹
SNI (Server Name Indication)
클라이언트가 접속하려는 호스트명을 TLS 핸드셰이크에 실어 보내, 한 IP의 여러 도메인 중 맞는 인증서를 서버가 고르게 하는 확장.
- 호스트명 검증과는 별개다. SNI는 서버가 인증서를 고르기 위한 것이고, 호스트명 검증은 클라이언트가 인증서의 이름을 확인하는 단계다.
- 학습 노트: OpenSSL로 mTLS 컨텍스트 만들기 — 인증서·CA·검증·ALPN·논블로킹
half-open connection
한쪽(또는 중간 장비)이 연결 정보를 잃었는데 다른 쪽은 연결이 살아 있다고 믿는 상태. FIN이나 RST가 오지 않아 한동안 알 수 없다.
- 예) 상대 장비의 전원이 나갔을 때, 중간 방화벽이 연결 정보를 지웠을 때.
- 감지 수단:
SO_KEEPALIVE(기본 설정으로는 약 2시간 11분 뒤 판정),TCP_USER_TIMEOUT, 응용 계층 하트비트. - 학습 노트: TCP 위의 분산 메시징 — 연결 역할·메시지 경계·하트비트·재접속·이중화
heartbeat / watchdog (하트비트 / 워치독)
연결이나 프로세스가 살아 있는지 주기적으로 확인 메시지를 주고받아 죽은 쪽을 찾는 장치.
- 주기 T와 허용 횟수 k로 타임아웃을 정한다(T × k). 짧으면 빨리 감지하지만 오탐과 트래픽이 늘어난다.
- HTTP/2의 PING 프레임이 같은 역할을 한다.
- 자동 헬스체크가 단일 스레드 응용을 블로킹할 수 있어, 연결 수준 확인과 프로세스 수준 판정을 나눠 설계하기도 한다.
- 학습 노트: TCP 위의 분산 메시징 — 연결 역할·메시지 경계·하트비트·재접속·이중화
framing (프레이밍, 길이 접두)
바이트 스트림(TCP)에서 메시지 하나의 경계를 정하는 방법. 가장 흔한 것은 메시지 앞에 길이를 붙이는 길이 접두 방식.
recv가 요청보다 적게 돌려줄 수 있으므로, “헤더 읽는 중 / 본문 읽는 중”을 상태로 들고 조립한다.- 길이 상한을 검증하지 않으면 잘못된 길이 값 하나에 메모리가 폭증한다.
- 학습 노트: TCP 위의 분산 메시징 — 연결 역할·메시지 경계·하트비트·재접속·이중화
Nagle 알고리즘 / TCP_NODELAY
Nagle은 작은 데이터를 모아서 보내 패킷 수를 줄이는 TCP 기능이고, TCP_NODELAY는 이를 끄는 소켓 옵션.
- 짧은 요청-응답 메시지에서 전송 지연이 문제가 되면
TCP_NODELAY를 켠다. - 학습 노트: TCP 위의 분산 메시징 — 연결 역할·메시지 경계·하트비트·재접속·이중화
star / full mesh (별형 / 망형 토폴로지)
별형은 한 서버에 나머지가 접속하는 구조(연결 N−1개), 망형은 모든 노드가 서로 연결된 구조(연결 N(N−1)/2개).
- 별형은 단순하지만 서버가 단일 장애점이다. 망형은 노드가 늘면 연결 수가 제곱으로 늘어난다.
- 학습 노트: TCP 위의 분산 메시징 — 연결 역할·메시지 경계·하트비트·재접속·이중화
nghttp2
C로 만든 HTTP/2 구현 라이브러리. 소켓, TLS, 스레드는 다루지 않고, 바이트를 넣으면 콜백이 호출되고 보낼 바이트를 돌려준다.
- 하나의
nghttp2_session은 한 시점에 한 스레드만 사용해야 한다. - 최신 문서는 이름이
2로 끝나는 새 함수(mem_recv2등)를 쓴다. 설치된 버전의 헤더를 확인한다. - 학습 노트: nghttp2 API 모델 — 세션·콜백·입출력 루프